package com.ltcode.auth.domain.service;

/**
 * 密码服务接口
 * 
 * @author ltcode
 * @since 2024-01-01
 */
public interface PasswordService {

    /**
     * 加密密码
     * 
     * @param rawPassword 原始密码
     * @return 加密后的密码
     */
    String encryptPassword(String rawPassword);

    /**
     * 验证密码
     * 
     * @param rawPassword 原始密码
     * @param encodedPassword 加密后的密码
     * @return 是否匹配
     */
    boolean matches(String rawPassword, String encodedPassword);

    /**
     * 生成随机密码
     * 
     * @param length 密码长度
     * @return 随机密码
     */
    String generateRandomPassword(int length);

    /**
     * 验证密码强度
     * 
     * @param password 密码
     * @return 是否符合强度要求
     */
    boolean validatePasswordStrength(String password);

    /**
     * 获取密码强度描述
     * 
     * @param password 密码
     * @return 强度描述
     */
    String getPasswordStrengthDescription(String password);
}
